Bagnaia took a 1.74s victory over championship leader Jorge Martin, who had qualified seventh, after 24 laps.
Marc Marquez beat Sprint winner Aleix Espargaro to the final podium place by 0.05s despite qualifying 14th.
At the race start, it was Bagnaia (Ducati Team) who launched from the line best and took the holeshot from the middle of the front row, with Pedro Acosta (GasGas Tech3) also making up ground to second.
The field stayed relatively close for the first couple of laps before Jack Miller (Red Bull KTM) crash out of seventh place on only the third lap.
Further in front, the race was still led by Bagnaia, who was trying his best to break away and over the next couple of laps was largely successful with only Acosta able to stick with the world champion.
Five laps in and the lead was finally in the hands of a Spanish rider when Martin (Pramac Ducati) overtook the Italian. A lap later, Acosta also worked his way past Bagnaia.
Determined to catch Martin in front of him and with finally with a bit of free air in front of him to cool down his front tyre, Acosta set the fastest lap of the race of Lap 7 with a 1:39.664s.
Having reduced the deficit to Martin far enough to consider overtaking moves, the next step was to continue the charge into leading the race.
Sitting right behind Martin for three laps trying to make his move overstressed his soft rear tyre too far and he crashed out on Lap 11 at Turn 10.
He was able to rejoin the race but had lost enough time that his chance at a win had gone and he was now in 21st place.
Bagnaia was promoted to second, Aleix Espargaro (Aprilia Racing) third, and Raul Fernandez (Trackhouse Aprilia) up to fourth. Marquez was two places further behind with Franco Morbidelli (Pramac Ducati) and Brad Binder (Red Bull KTM) between him and the lead riders.
One lap later and Marquez had passed both Morbidelli and Binder. With half the race still to run, he had a 0.9s deficit to Fernandez to overcome as his next target.
Out the front, Martin had built his advantage up to a slightly more comfortable 1.3s over Bagnaia, who in turn had 3.5s to Espargaro.
Both Martin and Fernandez were able to use their buffer to hold their positions for the next several laps but the inevitable happened and Marquez overtook Fernandez on Lap 18 before Bagnaia did the same to Martin on Lap 19.
With Marquez among the few to gamble on a soft rear Michelin tyre, it would be a question of how much grip he had left.
Martin, on the other hand, knew the answer about his own tyres and had no answer for Bagnaia.
While he tried to rein back the Italian, it quickly became about risk versus reward for Martin, allowing Bagnaia to build to a lead of over a second in selecting the reward of second place of risking the lot.
Marquez, however, chose the other option and selected the risk of chasing the final podium place occupied by Espargaro over the safer option of finishing fourth.
With three laps remaining, Marquez was into the podium places but had no remaining grip in his rear tyre.
That would keep Espargaro in the chase right to the finish line with Marquez admitting post-race that he “overtook Aleix and I push but the tyre was finished.”
After the crash from the lead in the Sprint, all eyes were on Bagnaia, but he held strong to reach the chequered flag at a circuit where he had never collected a single podium in 10 previous attempts in his world championship career.
Third place came down to the drive out of the final corner with Marquez winning this battle by a mere 0.05s, making for the first time he has collected three consecutive podiums since his last world title in 2019.
There was more drama deeper in the field with the remounted Acosta having a tremendous recovery to cross the finish line in 14th.
It was to get even better for the rookie with Enea Bastianini (Ducati Team) handed a Long Lap Penalty by Race Direction for a shortcut at Turn 2. Despite multiple laps to serve this penalty, Bastianini ignored it and, after receiving a double Long Lap Penalty and not serving that either, was finally punished with a Ride Through Penalty which was applied post-race as a 32 second addition to his race time.
That changed Bastianini’s time from a ninth place to 18th and no points, rewarding Acosta with 13th place in the official results.
Bagnaia’s win moves him up to second place in the standings and five points closer to championship leader Martin. Third place for Marquez is enough to hold onto third overall with only a week before a visit to Bagnaia’s home turf at the Autodromo Internazionale del Mugello.
Race results: Grand Prix race
Pos | Num | Rider | Nat | Team | Bike | Time/Gap |
1 | 1 | F. Bagnaia | ITA | Ducati Lenovo Team | Ducati | 40:11.726 |
2 | 89 | J. Martin | ESP | Prima Pramac Racing | Ducati | +1.740 |
3 | 93 | M. Marquez | ESP | Gresini Racing MotoGP | Ducati | +10.491 |
4 | 41 | A. Espargaro | ESP | Aprilia Racing | Aprilia | +10.543 |
5 | 49 | F. Di Giannantonio | ITA | Pertamina Enduro VR46 Racing Team | Ducati | +15.441 |
6 | 25 | R. Fernandez | ESP | Trackhouse Racing | Aprilia | +15.916 |
7 | 73 | A. Marquez | ESP | Gresini Racing MotoGP | Ducati | +16.882 |
8 | 33 | B. Binder | RSA | Red Bull KTM Factory Racing | KTM | +18.578 |
9 | 20 | F. Quartararo | FRA | Monster Energy Yamaha MotoGP Team | Yamaha | +20.477 |
10 | 88 | M. Oliveira | POR | Trackhouse Racing | Aprilia | +20.889 |
11 | 72 | M. Bezzecchi | ITA | Pertamina Enduro VR46 Racing Team | Ducati | +21.023 |
12 | 12 | M. Viñales | ESP | Aprilia Racing | Aprilia | +22.137 |
13 | 31 | P. Acosta | ESP | Red Bull GASGAS Tech3 | GasGas | +31.967 |
14 | 30 | T. Nakagami | JPN | IDEMITSU Honda LCR | Honda | +32.987 |
15 | 36 | J. Mir | ESP | Repsol Honda Team | Honda | +33.132 |
16 | 5 | J. Zarco | FRA | CASTROL Honda LCR | Honda | +34.554 |
17 | 10 | L. Marini | ITA | Repsol Honda Team | Honda | +36.689 |
18 | 23 | E. Bastianini | ITA | Ducati Lenovo Team | Ducati | +50.615 |
19 | 6 | S. Bradl | GER | HRC Test Team | Honda | +55.295 |
20 | 42 | A. Rins | ESP | Monster Energy Yamaha MotoGP Team | Yamaha | +63.428 |
DNF | 21 | F. Morbidelli | ITA | Prima Pramac Racing | Ducati | 17 laps |
DNF | 37 | A. Fernandez | ESP | Red Bull GASGAS Tech3 | GasGas | 5 laps |
DNF | 43 | J. Miller | AUS | Red Bull KTM Factory Racing | KTM | 2 laps |
Race winner: 24 laps
Riders’ championship
Pos | Rider | Nat | Pts |
1 | J. Martin | ESP | 155 |
2 | F. Bagnaia | ITA | 116 |
3 | M. Marquez | ESP | 114 |
4 | E. Bastianini | ITA | 94 |
5 | M. Viñales | ESP | 87 |
6 | P. Acosta | ESP | 83 |
7 | A. Espargaro | ESP | 76 |
8 | B. Binder | RSA | 75 |
9 | F. Di Giannantonio | ITA | 62 |
10 | M. Bezzecchi | ITA | 42 |
11 | A. Marquez | ESP | 42 |
12 | F. Quartararo | FRA | 32 |
13 | M. Oliveira | POR | 29 |
14 | R. Fernandez | ESP | 28 |
15 | J. Miller | AUS | 27 |
16 | F. Morbidelli | ITA | 15 |
17 | A. Fernandez | ESP | 13 |
18 | J. Mir | ESP | 13 |
19 | J. Zarco | FRA | 9 |
20 | T. Nakagami | JPN | 8 |
21 | A. Rins | ESP | 7 |
22 | D. Pedrosa | ESP | 7 |
23 | L. Marini | ITA | 0 |
24 | S. Bradl | GER | 0 |
25 | L. Savadori | ITA | 0 |